package com.trendata.util;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 项目返回信息
 * 
 * @author: HuangXiuXiu Email:243559392@qq.com
 */
public class ResultDO<T> implements Serializable {
	private static final long serialVersionUID = -5953039510672472469L;
	private boolean success = false; // 执行是否成功
	private String errCode;// 错误返回码
	private String errMsg;// 错误原因
	private T module; // 实际的返回结果

	public boolean isSuccess() {
		return this.success;
	}

	public void setSuccess(boolean success) {
		this.success = success;
	}

	public String getErrCode() {
		return errCode;
	}

	public void setErrCode(String errCode) {
		this.errCode = errCode;
	}

	public String getErrMsg() {
		errMsg = getRealMeanByErrCode();
		return errMsg;
	}

	public void setErrMsg(String errMsg) {
		this.errMsg = errMsg;
	}

	public T getModule() {
		return this.module;
	}

	public void setModule(T module) {
		this.module = module;
	}

	public final static Map<String, String> map = new HashMap<String, String>();
	static {
		map.put("-1", "系统繁忙，此时请开发者稍候再试");
		map.put("40001", "获取access_token时AppSecret错误，或者access_token无效。请开发者认真比对AppSecret的正确性，或查看是否正在为恰当的公众号调用接口");
		map.put("40002", "不合法的凭证类型");
		map.put("40003", "不合法的OpenID，请开发者确认OpenID（该用户）是否已关注公众号，或是否是其他公众号的OpenID");
		map.put("40008", "不合法的消息类型");
		map.put("40013", "不合法的AppID，请开发者检查AppID的正确性，避免异常字符，注意大小写");
		map.put("40014", "不合法的access_token，请开发者认真比对access_token的有效性（如是否过期），或查看是否正在为恰当的公众号调用接口");
		map.put("41009", "缺少openid");
		map.put("42001", "access_token超时，请检查access_token的有效期，请参考基础支持-获取access_token中，对access_token的详细机制说明");
		map.put("43004", "需要接收者关注");
		map.put("47001", "解析JSON/XML内容错误");
		map.put("50001", "用户未授权该api");
		map.put("61451", "参数错误(invalid parameter)");
		map.put("61450", "系统错误(system error)");
		map.put("61500", "日期格式错误");
		map.put("61501", "日期范围错误");
	}

	private String getRealMeanByErrCode() {
		String errorMsg = map.get(this.errCode);
		if (errorMsg != null) {
			return errorMsg;
		} else {
			return this.errMsg;
		}
	}
}
